package ar.edu.unicen.pladema.vc1.practico1;

import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;

import ar.edu.unicen.pladema.ui.model.ColorRange;
import ar.edu.unicen.pladema.vc1.model.GraphicAttributes;
import ar.edu.unicen.pladema.vc1.practico.PracticoDrawer;
/**
 * Pintar un rectánculo en pantalla, utilizando un degrade que vaya de negro a 
 * amarillo en la primer mitad del ancho del rectángulo, y de amarillo a rojo, 
 * en la segunda mitad. En Y, el degrade se mantiene constante.
 * Amarillo: 255, 255, 0
 * Rojo: 255,0,0
 * @author kache
 *
 */
public class P1Enunciado3Drawer extends PracticoDrawer {
	//e.gc.drawPoint(i, j); i ancho
	private ColorRange colorRange;
	private int width;
	private int height;
	public P1Enunciado3Drawer(GraphicAttributes ga) {
		super(ga);
		
		setColors(new RGB(0,0,0),new RGB(255,255,0),new RGB(255,0,0));
	}

	public void setColors(RGB inicio, RGB medio, RGB fin) {
		colorRange = new ColorRange(0, inicio);
		colorRange.add(getWidth()/2, medio);
		colorRange.add(getWidth(), fin);
	}
	@Override
	protected void paintControlImpl(PaintEvent e) {
		this.width = getWidth();
		this.height = graphicAttributes.getInt(GraphicAttributes.CLIENT_HEIGHT);
		for (int i=0; i<width; i++ ) {
			//Color c = new Color (panel.getDisplay(), 0,0, 0);
			for (int j=0; j<height; j++) {
				RGB color = colorRange.get(i);
				Color c = new Color (e.gc.getDevice(), color);
				e.gc.setForeground(c);
				e.gc.drawPoint(i, j);
			}
		}
	}
	private int getWidth() {
		return graphicAttributes.getInt(GraphicAttributes.CLIENT_WIDTH);
	}
}
